package web

import (
	"bytes"
	"context"
	"html/template"
)

// TemplateEngine
// @Description: 模板适配器接口
type TemplateEngine interface {

	//
	// Render
	// @Description: 渲染页面
	// @param ctx
	// @param tplName 模板名称
	// @param data
	// @return []byte
	// @return error
	//
	Render(ctx context.Context, tplName string, data any) ([]byte, error)
}

type GoTemplateEngin struct {
	T *template.Template
}

func (g *GoTemplateEngin) Render(ctx context.Context, tplName string, data any) ([]byte, error) {
	bs := &bytes.Buffer{}
	err := g.T.ExecuteTemplate(bs, tplName, data)
	return bs.Bytes(), err
}
